package exam.huawei.string;

import java.util.Scanner;

/**
 * 获取最大软件版本号
 *
 * Maven 版本号定义，<主版本>.<次版本>.<增量版本>-<里程碑版本>，举例3.1.4-beta其中，主版本和次版本都是必须的，主版本，次版本，增量版本由多位数字组成，可能包含前导零，里程碑版本由字符串组成
 * <主版本>.<次版本>.<增量版本>: 基于数字比较;
 * 里程碑版本:基于字符串比较，采用字典序:
 * 比较版本号时，按从左到右的顺序依次比较
 * 基于数字比较，只需比较忽略任何前导零后的整数值
 * 输入2个版本号，输出最大版本号。
 *
 * 输入描述：输入2个版本号，换行分割，每个版本的最大长度小于50
 * 输出描述：版本号相同时输出第一个输入版本号
 */
public class Example09 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String s1 = sc.next();
        String s2 = sc.next();

        System.out.println(getResult(s1, s2));
    }

    public static String getResult(String s1, String s2) {
        String[] v1 = getVersion(s1);
        String[] v2 = getVersion(s2);

        /*
         * 主要版本比较
         * */
        int major1 = Integer.parseInt(v1[0]), major2 = Integer.parseInt(v2[0]);
        if (major1 > major2) return s1;
        else if (major1 < major2) return s2;

        /*
         * 次要版本比较
         * */
        int minor1 = Integer.parseInt(v1[1]), minor2 = Integer.parseInt(v2[1]);
        if (minor1 > minor2) return s1;
        else if (minor1 < minor2) return s2;

        /*
         * 增量版本比较
         * */
        String patch1 = v1[2], patch2 = v2[2];
        if (!"".equals(patch1) || !"".equals(patch2)) {
            if ("".equals(patch2)) return s1;
            else if ("".equals(patch1)) return s2; // 走到这步，s2的增量版本确定不是空串，则如果只有s1的增量版本是空串，则返回s2

            // 走到此步，说明s1,s2的增量版本都不是空串，此当成数字进行比较
            int v1_patch = Integer.parseInt(patch1);
            int v2_patch = Integer.parseInt(patch2);
            if (v1_patch > v2_patch) return s1;
            else if (v1_patch < v2_patch) return s2;
        }

        /*
         * 里程碑版本比较
         * */
        String mile1 = v1[3], mile2 = v2[3];
        // s1,s2的里程碑的空串判断，同增量版本
        if ("".equals(mile2)) {
            return s1;
        } else if ("".equals(mile1)) {
            return s2;
        }

        // 如果s1，s2的里程碑版本都不是空串，则按照字典序比较
        return mile1.compareTo(mile2) >= 0 ? s1 : s2;
    }

    public static String[] getVersion(String s) {
        String major = "";
        String minor = "";
        String patch = "";
        String mile = "";

        // 找到第一个“-”,先把里程碑解析出来，因为里程碑中可能含有"-"和".",因此必须先处理掉
        int i = s.indexOf("-");

        String major_minor_patch = "";
        if (i != -1) {
            mile = s.substring(i + 1);
            major_minor_patch = s.substring(0, i);
        } else {
            major_minor_patch = s;
        }

        // 之后再处理非里程碑部分
        String[] split = major_minor_patch.split("\\.");
        major = split[0];
        minor = split[1];

        if (split.length > 2) {
            patch = split[2];
        }

        return new String[] {major, minor, patch, mile};
    }
}